/* 全局公共方法 */
const commonMethods = {
  install(Vue) {
    // rem自适应适配设置
    Vue.prototype.setAutoSize = () => {
      let deviceWidth = document.documentElement.clientWidth;
      if (deviceWidth > 768) deviceWidth = 768;
      document.documentElement.style.fontSize = deviceWidth / 7.5 + 'px';
    };

    // 判断是否在微信内置浏览器
    Vue.prototype.MethodIsInWx = () => /MicroMessenger/i.test(window.navigator.userAgent);

    // 显示小黑框提示信息，整合Van插件的普通toast、loading、success和fail
    // message：显示的文字；duration：持续多少毫秒；type：什么类型的提示
    // closeCallback：关闭后的回调函数
    Vue.prototype.MethodShowToast = (message, duration = 2000, type, forbidClick, closeCallback) => {
      const objToast = {
        message: message,
        duration: duration,
        forbidClick: !!forbidClick
      };
      if (type) objToast.type = type;
      if (type && type === 'loading') {
        objToast.forbidClick = true;
        objToast.duration = 10000;
      }
      if (typeof closeCallback === 'function') {
        objToast.onClose = () => {
          closeCallback();
        };
      }
      // 在这里还不能用this.$toast，只能通过原型去获取
      return Vue.prototype.$toast(objToast);
    };

    // 获取token信息
    // key不传则是拿整个token对象，传key就是拿其中一个属性
    Vue.prototype.MethodTokenData = key => {
      const tokenData = JSON.parse(window.localStorage.getItem('tokenData') || null);
      if (!tokenData) return null;
      return key ? tokenData[key] || '' : tokenData;
    };

    // 校验是否全是中文
    Vue.prototype.MethodIsChinese = value => {
      const reg = /[^\u4e00-\u9fa5]/;
      return !reg.test(value);
    };
  }
};

export default commonMethods;
